﻿layui.use(['table', 'laypage', 'layer'], function () {
    var laypage = layui.laypage;
    var layer = layui.layer;
    var table = layui.table;
    var form = layui.form;
    var $ = layui.$;

    // 获取从视图中嵌入的 ApiUrl
    var apiUrl = $('#apiUrl').data('url');

    $(function () {
        // 初始化加载数据
        getListData();
    })
    // 初始化表格渲染（首次加载数据）
    function getListData() {
        var Number = $('#deviceNumber').val();
        var Name = $('#deviceName').val();
        var status = $('#statusSelect').val();
        table.render({
            elem: '#deviceTable',
            url: apiUrl + 'smread/api/Device/GetTableDevice', // 数据接口
            where: {
                Number: Number,
                Name: Name,
                State: status
            },
            page: true, // 开启分页
            cols: [[
                { type: 'checkbox', fixed: 'left' },
                { field: 'DeviceNumber', title: '设备编号', width: 140 },
                { field: 'DeviceName', title: '设备名称', width: 150 },
                { field: 'DeviceType', title: '设备类型', width: 150 },
                { field: 'DevicePicture', title: '设备图片', width: 150 },
                { field: 'ProductionLine', title: '所在生产线', width: 150 },
                { field: 'PurchaseDate', title: '采购日期', width: 150 },
                {
                    field: 'DeviceState',
                    title: '状态',
                    width: 100,
                    templet: function (d) {
                        return d.DeviceState ? '<span style="color:green;">正常</span>' : '<span style="color:red;">异常</span>';
                    }
                },
                { fixed: 'right', title: '操作', toolbar: '#actionDemo', width: 150 }
            ]],
            parseData: function (res) { // 将原始数据解析成 table 组件所规定的数据
                return {
                    "code": res.Code, // 解析状态码
                    "msg": res.Message, // 解析状态信息
                    "count": res.Data.length, // 解析数据总长度（这里可能需要后端调整，因为通常count应该是总数）
                    "data": res.Data // 解析数据列表
                };
            }
        });
    }

    // 点击导出按钮
    document.getElementById('exportBtn').addEventListener('click', function () {
        var checkStatus = table.checkStatus('deviceTable');  // 获取当前表格的选中状态
        var selectedData = checkStatus.data;  // 获取选中的数据
        if (selectedData.length === 0) {
            alert('请先选择要导出的数据!');
            return;
        }
        var filteredData = selectedData.map(function (item) {
            // 创建一个新对象，只包含您想要的属性
            return {
                'Id': item.Id,
                '设备编号': item.DeviceNumber,
                '设备名称': item.DeviceName,
                '设备类型': item.DeviceType,
                '设备图片': item.DevicePicture,
                '所在生产线': item.ProductionLine,
                '采购日期': item.PurchaseDate,
                '状态': item.DeviceState,
                '创建人': item.CreatedBy,
                '创建时间': item.CreatedDate,
                '修改人': item.UpdatedBy,
                '修改时间': item.UpdatedDate,
                '删除人': item.DeletedBy,
                '删除时间': item.DeletedDate,
                '是否删除': item.IsDeleted
            };
        });

        // 使用 XLSX 导出选中的数据
        var wb = XLSX.utils.book_new();
        var ws = XLSX.utils.json_to_sheet(filteredData); // 将选中的数据转换为工作表
        XLSX.utils.book_append_sheet(wb, ws, 'Sheet1');

        // 导出为 Excel 文件
        XLSX.writeFile(wb, '机床列表数据.xlsx');
    });

    // 监听工具条
    table.on('tool(deviceTable)', function (obj) {
        var data = obj.data;

        if (obj.event === 'edit') {
            // 编辑操作（无论状态如何都可编辑）
            window.location.href = '/ShopMachine/EditDevice?id='+data.Id;
        } else if (obj.event === 'view') {
            // 查看操作（无论状态如何都可查看）
            window.location.href = '/ShopMachine/ShowDevice?id=' + data.Id;
        } else if (obj.event === 'stop') {
            // 停工操作（仅当状态为正常时显示并可执行）
            // 发送请求到服务器来执行停工操作
            layer.confirm('确定停工吗？', function (index) {
                StopWorkshop(data); // 调用删除函数删除当前合同
                layer.close(index);
            });
        } else if (obj.event === 'recover') {
            // 恢复操作（仅当状态为异常时显示并可执行）
            // 发送请求到服务器来恢复状态
            layer.confirm('确定恢复吗？', function (index) {
                RecoverWorkshop(data); // 调用删除函数删除当前合同
                layer.close(index);
            });
        }
    });

    //停工
    function StopWorkshop(data) {
        var obj = {
            id: data.Id,
            State: false
        };
        $.ajax({
            url: apiUrl + 'smwrite/api/Device/UpdStateDevice',
            type: 'post',
            contentType: 'application/json',
            data: JSON.stringify(obj),
            success: function (res) {
                if (res.Data > 0) {
                    // 成功修改后重新加载表格数据
                    getListData();
                    console.log(data);
                    layer.msg('设备停工成功');
                } else {
                    layer.msg('设备停工失败');
                }
            },
            error: function () {
                layer.msg('网络错误，设备停工失败');
            }
        });
    }

    //恢复
    function RecoverWorkshop(data) {
        var obj = {
            id: data.Id,
            State: true
        };
        $.ajax({
            url: apiUrl + 'smwrite/api/Device/UpdStateDevice',
            type: 'post',
            contentType: 'application/json',
            data: JSON.stringify(obj),
            success: function (res) {
                if (res.Data > 0) {
                    // 成功修改后重新加载表格数据
                    getListData();
                    console.log(data);
                    layer.msg('设备恢复成功');
                } else {
                    layer.msg('设备恢复失败');
                }
            },
            error: function () {
                layer.msg('网络错误，设备恢复失败');
            }
        });
    }

    //查询表单
    $('#searchDevice').on('click', function () {
        getListData();
    });

    // 重置表单
    $('#resetForm').click(function () {
        $('#deviceNumber').val('');
        $('#deviceName').val('');
        $('#statusSelect').val('');
        form.render('select'); // 重新渲染select选择框
        getListData(); // 重置后重新查询
    });

    $('#AddDevice').on('click', function () {
        window.location.href = '/ShopMachine/AddDevice';
    })
});